home *** CD-ROM | disk | FTP | other *** search
/ Aminet 41 / Aminet 41 (2001)(Schatztruhe)[!][Feb 2001].iso / Aminet / dev / c / libiconv_src.lha / src / translit.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-11-07  |  10.7 KB  |  439 lines

  1.  
  2. /*
  3.  * Transliteration table
  4.  */
  5.  
  6. static const unsigned char translit_data[754] = {
  7.    1, ' ',
  8.    1, '!',
  9.    1, 'c',
  10.    2, 'l', 'b',
  11.    3, 'y', 'e', 'n',
  12.    1, '|',
  13.    2, 'S', 'S',
  14.    1, '"',
  15.    3, '(', 'c', ')',
  16.    1, 'a',
  17.    2, '<', '<',
  18.    3, 'n', 'o', 't',
  19.    1, '-',
  20.    3, '(', 'R', ')',
  21.    2, '^', '0',
  22.    3, '+', '/', '-',
  23.    2, '^', '2',
  24.    2, '^', '3',
  25.    1,'\'',
  26.    1, 'u',
  27.    1, 'P',
  28.    1, '.',
  29.    1, ',',
  30.    2, '^', '1',
  31.    1, 'o',
  32.    2, '>', '>',
  33.    3, '1', '/', '4',
  34.    3, '1', '/', '2',
  35.    3, '3', '/', '4',
  36.    1, '?',
  37.    2, '`', 'A',
  38.    2,0xB4, 'A',
  39.    2, '^', 'A',
  40.    2, '~', 'A',
  41.    2, '"', 'A',
  42.    1, 'A',
  43.    2, 'A', 'E',
  44.    1, 'C',
  45.    2, '`', 'E',
  46.    2,0xB4, 'E',
  47.    2, '^', 'E',
  48.    2, '"', 'E',
  49.    2, '`', 'I',
  50.    2,0xB4, 'I',
  51.    2, '^', 'I',
  52.    2, '"', 'I',
  53.    1, 'D',
  54.    2, '~', 'N',
  55.    2, '`', 'O',
  56.    2,0xB4, 'O',
  57.    2, '^', 'O',
  58.    2, '~', 'O',
  59.    2, '"', 'O',
  60.    1, 'x',
  61.    1, 'O',
  62.    2, '`', 'U',
  63.    2,0xB4, 'U',
  64.    2, '^', 'U',
  65.    2, '"', 'U',
  66.    2,0xB4, 'Y',
  67.    2, 'T', 'h',
  68.    2, 's', 's',
  69.    2, '`', 'a',
  70.    2,0xB4, 'a',
  71.    2, '^', 'a',
  72.    2, '~', 'a',
  73.    2, '"', 'a',
  74.    1, 'a',
  75.    2, 'a', 'e',
  76.    1, 'c',
  77.    2, '`', 'e',
  78.    2,0xB4, 'e',
  79.    2, '^', 'e',
  80.    2, '"', 'e',
  81.    2, '`', 'i',
  82.    2,0xB4, 'i',
  83.    2, '^', 'i',
  84.    2, '"', 'i',
  85.    1, 'd',
  86.    2, '~', 'n',
  87.    2, '`', 'o',
  88.    2,0xB4, 'o',
  89.    2, '^', 'o',
  90.    2, '~', 'o',
  91.    2, '"', 'o',
  92.    1, ':',
  93.    1, 'o',
  94.    2, '`', 'u',
  95.    2,0xB4, 'u',
  96.    2, '^', 'u',
  97.    2, '"', 'u',
  98.    2,0xB4, 'y',
  99.    2, 't', 'h',
  100.    2, '"', 'y',
  101.    1, 'A',
  102.    1, 'a',
  103.    1, 'A',
  104.    1, 'a',
  105.    1, 'A',
  106.    1, 'a',
  107.    2,0xB4, 'C',
  108.    2,0xB4, 'c',
  109.    2, '^', 'C',
  110.    2, '^', 'c',
  111.    1, 'C',
  112.    1, 'c',
  113.    1, 'C',
  114.    1, 'c',
  115.    1, 'D',
  116.    1, 'd',
  117.    1, 'D',
  118.    1, 'd',
  119.    1, 'E',
  120.    1, 'e',
  121.    1, 'E',
  122.    1, 'e',
  123.    1, 'E',
  124.    1, 'e',
  125.    1, 'E',
  126.    1, 'e',
  127.    1, 'E',
  128.    1, 'e',
  129.    2, '^', 'G',
  130.    2, '^', 'g',
  131.    1, 'G',
  132.    1, 'g',
  133.    1, 'G',
  134.    1, 'g',
  135.    1, 'G',
  136.    1, 'g',
  137.    2, '^', 'H',
  138.    2, '^', 'h',
  139.    1, 'H',
  140.    1, 'h',
  141.    2, '~', 'I',
  142.    2, '~', 'i',
  143.    1, 'I',
  144.    1, 'i',
  145.    1, 'I',
  146.    1, 'i',
  147.    1, 'I',
  148.    1, 'i',
  149.    1, 'I',
  150.    1, 'i',
  151.    2, 'I', 'J',
  152.    2, 'i', 'j',
  153.    2, '^', 'J',
  154.    2, '^', 'j',
  155.    1, 'K',
  156.    1, 'k',
  157.    1, 'L',
  158.    1, 'l',
  159.    1, 'L',
  160.    1, 'l',
  161.    1, 'L',
  162.    1, 'l',
  163.    1, 'L',
  164.    1, 'l',
  165.    1, 'L',
  166.    1, 'l',
  167.    2,0xB4, 'N',
  168.    2,0xB4, 'n',
  169.    1, 'N',
  170.    1, 'n',
  171.    1, 'N',
  172.    1, 'n',
  173.    2,'\'', 'n',
  174.    1, 'O',
  175.    1, 'o',
  176.    1, 'O',
  177.    1, 'o',
  178.    2, '"', 'O',
  179.    2, '"', 'o',
  180.    2, 'O', 'E',
  181.    2, 'o', 'e',
  182.    2,0xB4, 'R',
  183.    2,0xB4, 'r',
  184.    1, 'R',
  185.    1, 'r',
  186.    1, 'R',
  187.    1, 'r',
  188.    2,0xB4, 'S',
  189.    2,0xB4, 's',
  190.    2, '^', 'S',
  191.    2, '^', 's',
  192.    1, 'S',
  193.    1, 's',
  194.    1, 'S',
  195.    1, 's',
  196.    1, 'T',
  197.    1, 't',
  198.    1, 'T',
  199.    1, 't',
  200.    1, 'T',
  201.    1, 't',
  202.    2, '~', 'U',
  203.    2, '~', 'u',
  204.    1, 'U',
  205.    1, 'u',
  206.    1, 'U',
  207.    1, 'u',
  208.    1, 'U',
  209.    1, 'u',
  210.    2, '"', 'U',
  211.    2, '"', 'u',
  212.    1, 'U',
  213.    1, 'u',
  214.    2, '^', 'W',
  215.    2, '^', 'w',
  216.    2, '^', 'Y',
  217.    2, '^', 'y',
  218.    2, '"', 'Y',
  219.    2,0xB4, 'Z',
  220.    2,0xB4, 'z',
  221.    1, 'Z',
  222.    1, 'z',
  223.    1, 'Z',
  224.    1, 'z',
  225.    1, 'S',
  226.    1, 'f',
  227.    1, 'S',
  228.    1, 's',
  229.    1, 'T',
  230.    1, 't',
  231.    1, '^',
  232.    1, '~',
  233.    1, '"',
  234.    1, 'B',
  235.    1, 'b',
  236.    1, 'D',
  237.    1, 'd',
  238.    1, 'F',
  239.    1, 'f',
  240.    1, 'M',
  241.    1, 'm',
  242.    1, 'P',
  243.    1, 'p',
  244.    1, 'S',
  245.    1, 's',
  246.    1, 'T',
  247.    1, 't',
  248.    2, '`', 'W',
  249.    2, '`', 'w',
  250.    2,0xB4, 'W',
  251.    2,0xB4, 'w',
  252.    2, '"', 'W',
  253.    2, '"', 'w',
  254.    2, '`', 'Y',
  255.    2, '`', 'y',
  256.    1, '-',
  257.    1, '-',
  258.    1, '-',
  259.    1, '-',
  260.    1, '-',
  261.    1, '-',
  262.    1, '"',
  263.    1, '"',
  264.    1, '"',
  265.    1, '+',
  266.    1, 'o',
  267.    3, '.', '.', '.',
  268.    4, 'o', '/', 'o', 'o',
  269.    1,0xB4,
  270.    2,0xB4,0xB4,
  271.    3,0xB4,0xB4,0xB4,
  272.    1, '<',
  273.    1, '>',
  274.    3, 'E', 'U', 'R',
  275.    3, 'N', 'o', '.',
  276.    2, 'T', 'M',
  277.    3, 'O', 'h', 'm',
  278.    3, '1', '/', '8',
  279.    3, '3', '/', '8',
  280.    3, '5', '/', '8',
  281.    3, '7', '/', '8',
  282.    2, '<', '-',
  283.    1, '^',
  284.    2, '-', '>',
  285.    1, 'V',
  286.    2, '<', '=',
  287.    2, '=', '>',
  288.    1, '-',
  289.    1, '/',
  290.    2, '/', '=',
  291.    2, '<', '=',
  292.    2, '>', '=',
  293.    2, '<', '<',
  294.    2, '>', '>',
  295.    1, '-',
  296.    1, '|',
  297.    1, '+',
  298.    1, '+',
  299.    1, '+',
  300.    1, '+',
  301.    1, '+',
  302.    1, '+',
  303.    1, '+',
  304.    1, '+',
  305.    1, '+',
  306. };
  307.  
  308. static const short translit_page00[248] = {
  309.     0,   2,   4,   6,  -1,   9,  13,  15, /* 0xa0-0xa7 */
  310.    18,  20,  24,  26,  29,  33,  35,  -1, /* 0xa8-0xaf */
  311.    39,  42,  46,  49,  52,  54,  56,  58, /* 0xb0-0xb7 */
  312.    60,  62,  65,  67,  70,  74,  78,  82, /* 0xb8-0xbf */
  313.    84,  87,  90,  93,  96,  99, 101, 104, /* 0xc0-0xc7 */
  314.   106, 109, 112, 115, 118, 121, 124, 127, /* 0xc8-0xcf */
  315.   130, 132, 135, 138, 141, 144, 147, 150, /* 0xd0-0xd7 */
  316.   152, 154, 157, 160, 163, 166, 169, 172, /* 0xd8-0xdf */
  317.   175, 178, 181, 184, 187, 190, 192, 195, /* 0xe0-0xe7 */
  318.   197, 200, 203, 206, 209, 212, 215, 218, /* 0xe8-0xef */
  319.   221, 223, 226, 229, 232, 235, 238, 241, /* 0xf0-0xf7 */
  320.   243, 245, 248, 251, 254, 257, 260, 263, /* 0xf8-0xff */
  321.   /* 0x0100 */
  322.   266, 268, 270, 272, 274, 276, 278, 281, /* 0x00-0x07 */
  323.   284, 287, 290, 292, 294, 296, 298, 300, /* 0x08-0x0f */
  324.   302, 304, 306, 308, 310, 312, 314, 316, /* 0x10-0x17 */
  325.   318, 320, 322, 324, 326, 329, 332, 334, /* 0x18-0x1f */
  326.   336, 338, 340, 342, 344, 347, 350, 352, /* 0x20-0x27 */
  327.   354, 357, 360, 362, 364, 366, 368, 370, /* 0x28-0x2f */
  328.   372, 374, 376, 379, 382, 385, 388, 390, /* 0x30-0x37 */
  329.    -1, 392, 394, 396, 398, 400, 402, 404, /* 0x38-0x3f */
  330.   406, 408, 410, 412, 415, 418, 420, 422, /* 0x40-0x47 */
  331.   424, 426,  -1,  -1, 429, 431, 433, 435, /* 0x48-0x4f */
  332.   437, 440, 443, 446, 449, 452, 455, 457, /* 0x50-0x57 */
  333.   459, 461, 463, 466, 469, 472, 475, 477, /* 0x58-0x5f */
  334.   479, 481, 483, 485, 487, 489, 491, 493, /* 0x60-0x67 */
  335.   495, 498, 501, 503, 505, 507, 509, 511, /* 0x68-0x6f */
  336.   513, 516, 519, 521, 523, 526, 529, 532, /* 0x70-0x77 */
  337.   535, 538, 541, 544, 546, 548, 550, 552, /* 0x78-0x7f */
  338.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x80-0x87 */
  339.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x88-0x8f */
  340.    -1,  -1, 554,  -1,  -1,  -1,  -1,  -1, /* 0x90-0x97 */
  341. };
  342. static const short translit_page02[8] = {
  343.   556, 558, 560, 562,  -1,  -1,  -1,  -1, /* 0x18-0x1f */
  344. };
  345. static const short translit_page02_1[32] = {
  346.    -1,  -1,  -1,  -1,  -1,  -1, 564,  -1, /* 0xc0-0xc7 */
  347.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0xc8-0xcf */
  348.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0xd0-0xd7 */
  349.    -1,  -1,  -1,  -1, 566, 568,  -1,  -1, /* 0xd8-0xdf */
  350. };
  351. static const short translit_page1e[136] = {
  352.    -1,  -1, 570, 572,  -1,  -1,  -1,  -1, /* 0x00-0x07 */
  353.    -1,  -1, 574, 576,  -1,  -1,  -1,  -1, /* 0x08-0x0f */
  354.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x10-0x17 */
  355.    -1,  -1,  -1,  -1,  -1,  -1, 578, 580, /* 0x18-0x1f */
  356.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x20-0x27 */
  357.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x28-0x2f */
  358.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x30-0x37 */
  359.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x38-0x3f */
  360.   582, 584,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x40-0x47 */
  361.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x48-0x4f */
  362.    -1,  -1,  -1,  -1,  -1,  -1, 586, 588, /* 0x50-0x57 */
  363.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x58-0x5f */
  364.   590, 592,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x60-0x67 */
  365.    -1,  -1, 594, 596,  -1,  -1,  -1,  -1, /* 0x68-0x6f */
  366.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x70-0x77 */
  367.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x78-0x7f */
  368.   598, 601, 604, 607, 610, 613,  -1,  -1, /* 0x80-0x87 */
  369. };
  370. static const short translit_page1e_2[8] = {
  371.    -1,  -1, 616, 619,  -1,  -1,  -1,  -1, /* 0xf0-0xf7 */
  372. };
  373. static const short translit_page20[48] = {
  374.   622, 624, 626, 628, 630, 632,  -1,  -1, /* 0x10-0x17 */
  375.    -1,  -1,  -1,  -1, 634, 636, 638,  -1, /* 0x18-0x1f */
  376.   640,  -1, 642,  -1,  -1,  -1, 644,  -1, /* 0x20-0x27 */
  377.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x28-0x2f */
  378.   648,  -1, 653, 655, 658,  -1,  -1,  -1, /* 0x30-0x37 */
  379.    -1, 662, 664,  -1,  -1,  -1,  -1,  -1, /* 0x38-0x3f */
  380. };
  381. static const short translit_page21[200] = {
  382.    -1,  -1,  -1,  -1,  -1,  -1, 670,  -1, /* 0x10-0x17 */
  383.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x18-0x1f */
  384.    -1,  -1, 674,  -1,  -1,  -1, 677,  -1, /* 0x20-0x27 */
  385.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x28-0x2f */
  386.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x30-0x37 */
  387.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x38-0x3f */
  388.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x40-0x47 */
  389.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x48-0x4f */
  390.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x50-0x57 */
  391.    -1,  -1,  -1, 681, 685, 689, 693,  -1, /* 0x58-0x5f */
  392.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x60-0x67 */
  393.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x68-0x6f */
  394.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x70-0x77 */
  395.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x78-0x7f */
  396.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x80-0x87 */
  397.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x88-0x8f */
  398.   697, 700, 702, 705,  -1,  -1,  -1,  -1, /* 0x90-0x97 */
  399.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0x98-0x9f */
  400.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0xa0-0xa7 */
  401.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0xa8-0xaf */
  402.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0xb0-0xb7 */
  403.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0xb8-0xbf */
  404.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0xc0-0xc7 */
  405.    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, /* 0xc8-0xcf */
  406.   707,  -1, 710,  -1,  -1,  -1,  -1,  -1, /* 0xd0-0xd7 */
  407. };
  408. static const short translit_page22[8] = {
  409.    -1,  -1, 713,  -1,  -1, 715,  -1,  -1, /* 0x10-0x17 */
  410. };
  411. static const short translit_page22_3[16] = {
  412.   717,  -1,  -1,  -1, 720, 723,  -1,  -1, /* 0x60-0x67 */
  413.    -1,  -1, 726, 729,  -1,  -1,  -1,  -1, /* 0x68-0x6f */
  414. };
  415. static const short translit_page25[64] = {
  416.   732,  -1, 734,  -1,  -1,  -1,  -1,  -1, /* 0x00-0x07 */
  417.    -1,  -1,  -1,  -1, 736,  -1,  -1,  -1, /* 0x08-0x0f */
  418.   738,  -1,  -1,  -1, 740,  -1,  -1,  -1, /* 0x10-0x17 */
  419.   742,  -1,  -1,  -1, 744,  -1,  -1,  -1, /* 0x18-0x1f */
  420.    -1,  -1,  -1,  -1, 746,  -1,  -1,  -1, /* 0x20-0x27 */
  421.    -1,  -1,  -1,  -1, 748,  -1,  -1,  -1, /* 0x28-0x2f */
  422.    -1,  -1,  -1,  -1, 750,  -1,  -1,  -1, /* 0x30-0x37 */
  423.    -1,  -1,  -1,  -1, 752,  -1,  -1,  -1, /* 0x38-0x3f */
  424. };
  425.  
  426. #define translit_index(wc) \
  427.   (wc >= 0x00a0 && wc < 0x0198 ? translit_page00[wc-0x00a0] : \
  428.    wc >= 0x0218 && wc < 0x0220 ? translit_page02[wc-0x0218] : \
  429.    wc >= 0x02c0 && wc < 0x02e0 ? translit_page02_1[wc-0x02c0] : \
  430.    wc >= 0x1e00 && wc < 0x1e88 ? translit_page1e[wc-0x1e00] : \
  431.    wc >= 0x1ef0 && wc < 0x1ef8 ? translit_page1e_2[wc-0x1ef0] : \
  432.    wc >= 0x2010 && wc < 0x2040 ? translit_page20[wc-0x2010] : \
  433.    wc == 0x20ac ? 666 : \
  434.    wc >= 0x2110 && wc < 0x21d8 ? translit_page21[wc-0x2110] : \
  435.    wc >= 0x2210 && wc < 0x2218 ? translit_page22[wc-0x2210] : \
  436.    wc >= 0x2260 && wc < 0x2270 ? translit_page22_3[wc-0x2260] : \
  437.    wc >= 0x2500 && wc < 0x2540 ? translit_page25[wc-0x2500] : \
  438.    -1)
  439.